从字符串中删除特殊字符php

zpjtge22  于 2023-03-28  发布在  PHP
关注(0)|答案(5)|浏览(157)

我有这根线

<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>

我想删除所有字符,只打印2020265
我该怎么做呢?我用过str_replace,但它不起作用。有什么想法吗?
我使用了一个htmlspecialchars()函数,但是现在我不知道了。我现在的字符串是

&lt;itcc-ci:somevariabletext contextRef=&quot;cntxCorr_i&quot; unitRef=&quot;eur&quot; decimals=&quot;0&quot;&gt;2020265&lt;/itcc-ci:somevariabletext&gt;
ac1kyiln

ac1kyiln1#

它是XML,因此将其解析为XML。

$x = '<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>';
$d = new DomDocument();
$d->loadXml($x);

$list = $d->getElementsByTagName('itcc-ci:somevariabletext');
foreach($list as $node) {
    var_dump($node->textContent);
}

这将产生一个警告,因为它不是一个完整的文档,并且缺少命名空间声明。您应该解析 full 文档并使用XML操作来提取您想要的数据,而不是从中间挑选片段。
参见:https://www.php.net/manual/en/book.dom.php

daupos2t

daupos2t2#

您的数据缺少基本信息。假设您拥有所有信息,只是没有在此处共享:

$input = '<?xml version="1.0" ?>
<some-root-tag xmlns:itcc-ci="some-missing-uri">
    <itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>
</some-root-tag>
';

$xml = new SimpleXMLElement($input);
$xml->registerXPathNamespace('itcc-ci', 'some-missing-uri');
$value = (string)$xml->xpath('//itcc-ci:somevariabletext')[0];

var_dump($value);

Demo

5kgi1eie

5kgi1eie3#

你可以使用preg_match函数。

$text = '<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>';
    
    
    if (preg_match('/>(\d+)<\/itcc-ci:somevariabletext>/', $text, $matches)) {
        // $matches[1] contains the matched number
        echo $matches[1];
    }
guykilcj

guykilcj4#

请查一下

$len= strlen("2020265");

$pos= strpos('<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>
',"2020265");

$result=substr('<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>
',$pos,$len);

echo $result;
cs7cruho

cs7cruho5#

我的建议是,我们利用这个数字在'〉'和'〈'字符之间的事实。如果这总是规则,那么这样的代码将有所帮助:

$contextRef= '<itcc-ci:somevariabletext contextRef="cntxCorr_i" unitRef="eur" decimals="0">2020265</itcc-ci:somevariabletext>';

$startPos = strpos($contextRef, '&gt;') + strlen('&gt;');
$endPos = strpos($contextRef, '&lt;', $startPos);
$length = $endPos - $startPos;
$number = substr($contextRef, $startPos, $length);
echo  $number;

相关问题