Php 扫描HTML以查找前面带有特殊字符的值

Php 扫描HTML以查找前面带有特殊字符的值,php,Php,假设我的页面上有值,比如#100#246,我要做的是扫描页面,查找前面有#的值,然后更改它们,在其上放置超链接 $MooringNumbers = '#!' . $MooringNumbers . ' | ' . '#!' . $row1["Number"]; } $viewedResult = '<tr><td>' .$Surname.'</td><td>'.$Title.'</td><td>'.$Moo

假设我的页面上有值,比如#100#246,我要做的是扫描页面,查找前面有#的值,然后更改它们,在其上放置超链接

$MooringNumbers = '#!' . $MooringNumbers . ' | ' . '#!' . $row1["Number"];
  }  
    $viewedResult =  '<tr><td>' .$Surname.'</td><td>'.$Title.'</td><td>'.$MooringNumbers . '</td><td>'.$Telephone.'</td><td>' . '<a href="rlayCustomerUpdtForm.php?id='.$id.'">[EDIT]</a></td>'.'<td>'. '<a href="deleteCustomer.php?id='.$id.'">[x]</a></td>'. '</tr>';   preg_replace('/#!(\d\d\d)/', '<a href="update.php?id=${1}">${1}</a>', $viewedResult);
    echo $viewedResult;
$MooringNumbers='#!'$mooringnumber.“|”.#!”$第1行[“编号”];
}  
$viewedResult='.$LANSAME'.$Title'.$MooringNumbers'.'$电话;preg_replace(“/”!(\d\d\d)/”,“$viewedResult);
echo$viewedResult;

这是一段无法正常工作的代码。

您可以通过使用正则表达式来实现这一点,请参阅PHP的

$text='Lorem ipsum#300 dolar amet#20';
preg_match_all(“/(^|\s)#(\w+/”,$text,$matches);
//在这里为$matches[2]中的每个元素执行数据库魔术
var_dump($matches[2]);
//假查询结果
$query\u result=array(300=>'http://www.example1.com', 20 => 'http://www.example2.com');
foreach($query\u result作为$result\u key=>$result\u值)
{
$text=str#u replace(“#”。$result_key,”,$text);
}
变量转储($text);

I第二个Xoc-使用PHP手册。他指出的方法旁边的方法是

只要打电话:

preg_replace_callback(
        '/#\d\d\d/',
        create_function(
            // single quotes are essential here,
            // or alternative escape all $ as \$
            '$matches',
            'return strtolower($matches[0]);' //this you replace with what you want to fetch from database
        )
编辑: 由于您希望始终执行相同的替换,请使用Xoc的preg replace:

preg_replace('/#!(\d\d\d)/', '<a href="update.php?id=${1}">${1}</a>', $your_input);
preg_replace('/#!(\d\d\d)/',''$your_input);

注意:我这里没有PHP,所以我不能保证这段代码不会擦除整个硬盘;)

我的值是随机的,我不知道它们都是什么,因为它们是从数据库中拉下来的。如果我知道这些值是什么,那该怎么做呢?这篇文章有什么相关性和完全相关性,所以每个#整数都有一个存储在数据库中的URL?我会编写一个正则表达式来查找所有的#,将整数放入数组,查询数据库并对每个数组元素执行str#u replace()。我在原始答案中添加了一个代码示例,使用了我描述的算法。$query#result=array(300=>,20=>);这是我不想使用的位,因为我的值是随机的,只需要像“如果…”那样提交。。。html是这样的吗 普通文本,产品价格:450™

。在这里,preg_replace不会像预期的那样工作……但是,不管他使用什么样的替换解决方案,他都必须提供一种独特的模式……@Majki,欢迎使用堆栈溢出!=)如果您有时间,您应该看看如何将代码格式化为代码。但是由于您指出了一个非常重要的示例,您可以将模式更改为/[^&](#\d\d\d)/Hey!所以你的值不是随机的,但是你总是以同样的方式改变它们。然后坚持Xoc在他的第一篇文章中给你的东西。
preg_replace('/#!(\d\d\d)/', '<a href="update.php?id=${1}">${1}</a>', $your_input);