-3

我有一些这样的 HTML 代码:

<a href="http://mysite.com/documentos/Servicios/SUCRE/sucDoc19.pdf&amp;sa=U&amp;ei=sf0JUrmjIc3Nswb154CgDQ&amp;ved=0CCkQFjAA&amp;usg=AFQjCNGfXg_9x83U3pYr6JfkJcWuXv8X0Q">

我需要清理我的代码才能得到这样的东西

<a href="http://mysite.com/documentos/Servicios/SUCRE/sucDoc19.pdf">

使用preg_replace.

我的代码如下:

$serp = preg_replace('&amp;sa=(.*)" ', '" ', $serp);

它不起作用。

顺便说一句,我需要使用 preg_replace 限制搜索,直到第一个入口,即我需要将所有 html 从替换&amp;sa=到 FIRST ",但现在它从搜索&amp;sa=到 LAST "...

4

3 回答 3

2

您缺少正则表达式分隔符。

$serp = preg_replace('/&amp;sa=(.*)" /', '" ', $serp);

会给你这个

于 2013-08-13T10:10:11.817 回答
1

你错过了分隔符。所以你的代码看起来像:

$serp = preg_replace('/&amp;sa=(.*)" /', '" ', $serp);

好的,如果您想删除第一个引号之前的所有内容,那么您可以尝试以下操作而不是正则表达式:

$temp = substr($serp,strpos($serp,'&amp;sa='),strpos($serp,'"',strpos($serp,'&amp;sa=')));
$serp = str_replace($temp,"",$serp);
于 2013-08-13T10:13:45.557 回答
0

只是另一个正则表达式来做到这一点:)

$text = '<a href="http://mysite.com/documentos/Servicios/SUCRE/sucDoc19.pdf&amp;sa=U&amp;ei=sf0JUrmjIc3Nswb154CgDQ&amp;ved=0CCkQFjAA&amp;usg=AFQjCNGfXg_9x83U3pYr6JfkJcWuXv8X0Q" target="_blank">';

$text = preg_replace('/(&amp;sa=[^"]*)/', '', $text);

echo $text;

// Output:
<a href="http://mysite.com/documentos/Servicios/SUCRE/sucDoc19.pdf" target="_blank">

你可以在这里试试(这个工具感谢 hjpotter92)

于 2013-08-13T15:39:12.730 回答