这是我的代码
<?php
/**
* @author Joomlacoders
* @copyright 2010
*/
$url="http://urlchecker.net/html/demo.html";
$innerHtml=file_get_contents($url);
//echo $innerHtml;
preg_match_all("{\<div id='news-id-.*d'\>(.*)\</div\>}",$innerHtml,$matches);
//<div id='news-id-160346'>
var_dump($matches);
?>
Run Code Online (Sandbox Code Playgroud)
我想找到div id ='news-id-160346'中的所有内容.请帮我
我正在使用PHP preg_match_all,这是我到目前为止所能获得的....
[A-Za-z+\W]+\s[\d]
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我需要\ W不是一个".
所以我试过了:
[A-Za-z+[^\dA-Za-z"]\s?]+\s[\d]
[A-Za-z+]\s?+[^A-Za-z\d"]?\s[\d]
Run Code Online (Sandbox Code Playgroud)
除其他外,它只是失败,我真的无法弄清楚为什么.
这是整个RegEx;
([A-Z][a-z]+\s){1,5}\s?[^a-zA-Z\d\s:,.\'\"]\s?
[A-Za-z+\W]+\s[\d]{1,2}\s[A-Z][a-z]+\s[\d]{4}
Run Code Online (Sandbox Code Playgroud)
我把它分成两行,第二行从我发布的内容开始.
试图匹配的模式:
India – Adulterated Tea Powder Seized 18 April 2011
India – Importer of Haldiram’s Petha Sweet Cubes Issuing Voluntary Recall 26 April 2011
India – Undeclared Gluten Found in Sweets by Canadian Authorities 27 April 2011
India – Adulteration Found in Edible Oils 28 April 2011
India – Viral Disease Affects Chili Crop in Goa 28 April 2011
NOT ----> Chili – India: …Run Code Online (Sandbox Code Playgroud) 我知道问题标题看起来非常重复.但是我在这里找不到一些解决方案.
我需要找到url表单文本字符串:
$pattern = '`.*?((http|https)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i';
if (preg_match_all($pattern,$url_string,$matches)) {
print_r($matches[1]);
}
Run Code Online (Sandbox Code Playgroud)
使用这种模式我能找到的网址http://和https://这是好.但我有用户输入,人们www.domain.com甚至可以添加网址domain.com
所以,我需要首先验证字符串,然后我可以用它们之前的www.domain.com domain.com常规协议替换http://它.或者我需要提出更好的模式?
我对正则表达不太好,不知道该怎么做.
我的想法是首先找到的网址http://,并https://在把它们放在一个数组,然后替换这些URL以空格("")的文本字符串,然后使用其他模式来进行的.但我不确定使用什么模式.
我正在使用这个,$url_string = preg_replace($pattern, ' ', $url_string );但是删除两个有效网址之间的任何www.domain.com或domain.com网址http://或https://
如果你能提供帮助就会很棒.
为了使事情更清楚:
我需要一个模式或其他方法,我可以在文本中找到所有网址.url的例子是:
谢谢!5.
我还在学习很多关于PHP的知识,字符串更改是我感兴趣的东西.我之前使用过preg_match来验证电子邮件地址或只搜索查询.
我刚从这篇文章中发表我的正则表达式有什么问题?并且好奇为什么preg_match_all函数产生2个字符串,1 w /一些字符被剥离,然后另一个带有所需的输出.
根据我对该函数的理解,它使用RegEx来逐字符串地逐字符号来评估如何处理它.这个RegEx的结构是否可以绕过第一个数组条目并产生所需的结果?
所以你不必去另一个线程
$str = 'text^name1^Jony~text^secondname1^Smith~text^email1^example-
free@wpdevelop.com~';
preg_match_all('/\^([^^]*?)\~/', $str, $newStr);
for($i=0;$i<count($newStr[0]);$i++)
{
echo $newStr[0][$i].'<br>';
}
echo '<br><br><br>';
for($i=0;$i<count($newStr[1]);$i++)
{
echo $newStr[1][$i].'<br>';
}
Run Code Online (Sandbox Code Playgroud)
这将输出
^乔尼斯〜
^史密斯〜
^example-free@wpdevelop.com~
强尼
·史密斯
example-free@wpdevelop.com
我很好奇,如果2个数组条目的原因是由于字符串的原始sytax或者它是函数的正常处理响应.对不起,如果这不应该在这里,但我真的很好奇这是如何工作的.
谢谢,布罗迪
我使用下面的代码获取html内容,
preg_match_all('/<div class="content">(.*?)<\/div>/s', $str, $matches);
echo $matches[1][0];
Run Code Online (Sandbox Code Playgroud)
内容已正确获取但某些特殊字符文本无法正确显示
“response to what?” 显示为"响应什么?"
but it doesn’t显示为但不重要.和一些空白的空间显示为
如何解决这个问题..?
"〜"字符在下面的含义是什么?:
preg_match_all("~<img [^>]+>~", $inputw, $output);
Run Code Online (Sandbox Code Playgroud)
我猜他们是开始和结束标记,如^和$.
我想从html之间提取一个数字<td>...</td>.我试过以下代码:
$views = "/<td id=\"adv-result-views-(?:.*)\" class=\"spec\">(.*?)<\/td>/";
Run Code Online (Sandbox Code Playgroud)
after -views-是一个随机数.忽略搜索中随机数的正确代码是什么?
我尝试从德语格式的字符串中获取电话号码。但是我没有完全发挥作用。输入文本是一个完整的HTML页面,其中包含很多内容,而不仅仅是数字。
可能的格式:
(06442) 3933023
(02852) 5996-0
(042) 1818 87 9919
06442 / 3893023
06442 / 38 93 02 3
06442/3839023
042/ 88 17 890 0
+49 221 549144 – 79
+49 221 - 542194 79
+49 (221) - 542944 79
0 52 22 - 9 50 93 10
+49(0)121-79536 - 77
+49(0)2221-39938-113
+49 (0) 1739 906-44
+49 (173) 1799 806-44
0173173990644
0214154914479
02141 54 91 44 79
01517953677
+491517953677
015777953677
02162 - 54 91 44 79
(02162) 54 91 44 …Run Code Online (Sandbox Code Playgroud) 我需要一个正则表达式php的帮助.如果在字符串中找到某个字符后的数字.获取该数字并在应用数学后替换它.像货币转换.
我应用了这个正则表达式https://regex101.com/r/KhoaKU/1
([^ \?] )AUD(\ d)
正则表达式不正确我希望所有匹配的数字在这里只有它匹配40但是还有20.00,9.9等..我想要得到所有.并转换它们.
function simpleConvert($from,$to,$amount)
{
$content = file_get_contents('https://www.google.com/finance/converter?a='.$amount.'&from='.$from.'&to='.$to);
$doc = new DOMDocument;
@$doc->loadHTML($content);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//*[@id="currency_converter_result"]/span')->item(0)->nodeValue;
return $result;
}
$pattern_new = '/([^\?]*)AUD (\d*)/';
if ( preg_match ($pattern_new, $content) )
{
$has_matches = preg_match($pattern_new, $content);
print_r($has_matches);
echo simpleConvert("AUD","USD",$has_matches);
}
Run Code Online (Sandbox Code Playgroud)
function recursiveSplit($string, $layer) {
$err = preg_match_all("/\{(([^{}]*|(?R))*)\}/",$string,$matches);
echo "Elementi trovati: $err<br>";
if($err == FALSE) echo "preg_match_all ERROR<br>";
// iterate thru matches and continue recursive split
if (count($matches) > 1) {
for ($i = 0; $i < count($matches[1]); $i++) {
if (is_string($matches[1][$i])) {
if (strlen($matches[1][$i]) > 0) {
echo "<pre>Layer ".$layer.": ".$matches[1][$i]."</pre><br />";
recursiveSplit($matches[1][$i], $layer + 1);
}
}
}
}
}
$buffer = "{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}";
recursiveSplit($buffer, 0);
Run Code Online (Sandbox Code Playgroud)
产量
Elementi trovati:
preg_match_all ERROR
Backtrack limit was exhausted!
Run Code Online (Sandbox Code Playgroud)
此代码给出了PREG_BACKTRACK_LIMIT_ERROR错误...但回溯限制设置为100.000.000.
这是我第一次使用正则表达式,我真的不知道如何解决它.
非常感谢,Marco