在PHP中的正则表达式删除部分字符串

时间:2013-07-26 21:55:55

标签: php regex

在下面的代码中:

<a href="http://example.com/yadayada" yada-yadayada="/yada/yadayada/yadayada.php?x=12345&amp;yadayadayasomehtmltagandgiberishtexthere

如何在php中编写一个正则表达式,它将删除x=之前的所有内容以及&am之后的所有内容,因此我只会获得值12345,这只是一个示例,但实际上,它各不相同。

3 个答案:

答案 0 :(得分:3)

假设您使用DOMDocument提取了整个网址:

// $url = '/yadayada?x=12345&y=7890';
parse_str(parse_url($url, PHP_URL_QUERY), $arr);
echo $arr['x'];

另请参阅:parse_url() parse_str()

答案 1 :(得分:1)

使用匹配数字[0-9]的简单\d

$text = '<a href="http://example.com/yadayada" yada-yadayada="/yada/yadayada/yadayada.php?x=12345&amp;yadayadayasomehtmltagandgiberishtexthere';
preg_match_all("#x=(\d+)(&amp;|&)#", $text, $match);
print_r($match[1]);//12345

更新:模式已更改为x=(\d+)(&amp;|&)

答案 2 :(得分:0)

好吧我用@Akam和@Herberts帮助解决了它。

preg_match_all(&#34; #x =(\ d +)&amp; amp#&#34;,$ url,$ match); 的print_r($匹配[1]);

谢谢你们!