我需要使用php从给定字符串中提取数字
如果我的编号=432987,则可以使用以下方法:我需要使用php从给定字符串中提取数字,php,regex,preg-match-all,Php,Regex,Preg Match All,如果我的编号=432987,则可以使用以下方法: $string = '<table><tr><td>432987</td></tr></table>'; preg_match_all("(\\d{6})", $string, $match); var_dump($match[0]); $string='432987'; preg_match_all(“(\\d{6})”,$string,$match); var_du
$string = '<table><tr><td>432987</td></tr></table>';
preg_match_all("(\\d{6})", $string, $match);
var_dump($match[0]);
$string='432987';
preg_match_all(“(\\d{6})”,$string,$match);
var_dump($match[0]);
因此,上面的代码可以用来获得一些特定长度的数字,如果我不知道数字的长度,那么解决方案是什么
需要从中提取/匹配编号的字符串示例如下:
Snippet 1:
<table><tr><td>432987</td></tr></table>
Snippet 2:
<div>164PE
09983 PO#432987</div>
Snippet 3:
Order 432987IRC
Snippet 4:
432987
片段1:
432987
片段2:
164PE
09983 PO#432987
片段3:
订单432987IRC
片段4:
432987
如果需要更多的澄清,请告诉我
以上是原始问题的编辑部分。$string='432987';
$table=新的simplexmlement($string);
echo$table->tr->td//432987
您无法使用正则表达式解析XML,请使用
simplexmlement
,因为这种情况将解决您的问题。更多信息请参见。我本来不打算回答这个问题,但阅读《汤姆·洛兹与神秘主义者》的链接让我重新考虑
正则表达式可用于解析所示的所有示例,因为XHTML是“fluff”,对于数字的查找完全不重要。是的,XHTML的某些实例可能会在一行中包含6个数字字符,但这充其量也不太可能,而且对于这个应用程序的感知规模(即,从给出的代码片段判断,不复杂或庞大),这将是一个值得怀疑的问题
结果输出完全不依赖于任何形式的[X]HTML
引述:
片段1:
<table><tr><td>432987</td></tr></table>
片段4:
432987
要解决所有这些问题并返回丢失的号码,432987您只需执行以下操作:
$string = //whatever from above
preg_match_all("/[0-9]{6}/", $string, $match);
这将匹配任何6位数字的字符串,不间断充分证明:
$string1 = "<table><tr><td>432987</td></tr></table>";
$string2 = "<div>164PE
09983 PO#432987</div>";
$string3 = "Order 432987IRC";
$string4 = "432987";
$string5 = "<html><head><title>Some numbers</title></head>
<body><h2>Oh my word, this is HTML being attacked by Regex!!!</h2>
<p>This must be Doooom! 123456</p>
</body>
</html>";
preg_match_all("/[0-9]{6}/", $string5, $match);
print_r($match);
做完全相同的事情
我假设您想要一个6位数的数字,但我怀疑如果您知道这个数字是什么,并且这个数字是静态的,那么使用PHP字符串查找和替换函数(如等)就更容易了
编辑:。它是有效的HTML吗?使用DOM解析器。必须链接到预期的内容?代码片段1、2、3和4都返回
432987
。如果#3有IRC
?@simer,你真的需要澄清你的问题。你到底想“找到”什么?标准是什么?。。所以你想在空格之间找到任意长度的数字和围绕它的任何其他字符,是吗?请编辑您的问题并设置这些关键细节。谢谢。@Simer感谢您的更新,但是您告诉Chris85您的结果应该包含“IRC”txt,但是在您编辑的问题中没有提到这种类型的要求。如果您只需要一些长度x
数字,我的答案将非常适合您(只需更新{6}-->{x}
:-)
虽然此代码可能有助于解决问题,但它没有解释为什么和/或如何回答问题。提供这种额外的环境将大大提高其长期教育价值。请在回答中添加解释,包括适用的限制和假设。@jared chu请检查我提到的更新。我提到了要解析的4个不同字符串。这不是我在问题中提到的相同解决方案吗?谢谢。@Simer,你的语法是错误的,但你的想法是一样的。我刚刚演示了该方法适用于所有给定的代码段。如果您已经解决了问题中的问题,为什么要将其发布在StackOverflow上<代码>:-D
432987
$string = //whatever from above
preg_match_all("/[0-9]{6}/", $string, $match);
$string1 = "<table><tr><td>432987</td></tr></table>";
$string2 = "<div>164PE
09983 PO#432987</div>";
$string3 = "Order 432987IRC";
$string4 = "432987";
$string5 = "<html><head><title>Some numbers</title></head>
<body><h2>Oh my word, this is HTML being attacked by Regex!!!</h2>
<p>This must be Doooom! 123456</p>
</body>
</html>";
preg_match_all("/[0-9]{6}/", $string5, $match);
print_r($match);
preg_match_all("/\d{6}/", $string5, $match);