Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP XPATH:XPATH字符串中的返回字符_Php_String_Xpath_Count_Character - Fatal编程技术网

PHP XPATH:XPATH字符串中的返回字符

PHP XPATH:XPATH字符串中的返回字符,php,string,xpath,count,character,Php,String,Xpath,Count,Character,在xpath中查找Field42的第一个字符时遇到问题,请参见下文。有什么建议吗 $letters = split(',','0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z'); foreach($letters AS $letter) { if(count($item->xpath("/Entries/Entry[Field42{0}='".$letter."']")) > 0) {

在xpath中查找Field42的第一个字符时遇到问题,请参见下文。有什么建议吗

$letters = split(',','0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z');
foreach($letters AS $letter) {
if(count($item->xpath("/Entries/Entry[Field42{0}='".$letter."']")) > 0) {
        $entries = $item->xpath("/Entries/Entry[Field42{0}='".$letter."']"); ?>
XML结构

<Entries>
<Entry>
    <EntryId>33</EntryId>
    <Field71/>
    <Field41>Jane</Field41>
    <Field42>Smith</Field42>

33
简
史密斯

您可以使用XPath的
函数开头:

$item->xpath("/Entries/Entry[starts-with(Field42,'".$letter."')]")

如果希望所有
条目
元素以给定字符串中的字母开头,请使用:


/Entries/Entry[包含('0123456789abcdefghjjklmnopqrstuvwxyz',子字符串(,,1,1))

使用
数组合并(范围(0,9),范围('a',z'))可以更轻松地创建
$letters
数组。
。你的代码怎么了?有错误吗?你想要什么,它做什么?您确定您的XPath有效吗?我从未见过
{0}
(但这并不意味着什么),你能发布其中一个条目记录的结构吗?@Felix-什么都没发生,$string{0}=s,但在xpath内部它不起作用。你知道有什么办法吗?我需要按字母顺序排列我的条目。@MacAnthony-需要按姓氏按字母顺序排列的基本xml结构。@Jeffrey:嗯,我打赌PHP会抛出一些错误或警告,告诉您XPath表达式无效。