2012-11-16 129 views
0

我有一個簡短的小函數,我通過CSS文件讀取並返回屬性的值。問題在於它讀取我想要的值並將值更深地返回到文件中。strpos無法識別字符串

這裏的功能;

function get_css($f, $tag, $el) { 
$css = fopen($f, "r"); 
$line = fgets($css); 
while (!feof($css)) { 
    if(strpos($line, $tag) > 0) { 
     while (!feof($css)) { 
      $line = fgets($css); 
      if (strpos($line, $el) > 0) { 
       return substr(substr($line, strpos($line, ":")+1), 0, -1); 
      } 
     } 
    } 
    $line = fgets($css); 
} 
} 

下面是我如何稱呼它;

$ew = get_css("1688_style.css", "elevations", "width"); 

下面是它讀取的CSS文件的示例;

Body { 
margin:0; 
color:black; 
width:100%; 
height:100%; 
margin-left:auto; 
margin-right:auto; 
padding:0px; 
font-family:arial,sans-serif; 
background-color:#FFFFFF; 
} 

#Content { 
position:relative; 
display:inline-block; 
background-color:#FFFFFF; 
margin-top:30px; 
margin-left:80px; 
width:1520px; 
} 

#elevations { 
position:relative; 
display:inline-block; 
width:250px; 
text-align:center; 
}     

#views { 
display:inline-block; 
cursor:pointer; 
margin-top:20px; 
margin-left:15px; 
} 

#help { 
position:absolute; 
width:50px; 
text-align:center; 
font-size:12px; 
top:18px; 
right:20px; 
} 

我期望的是250px,但是我得到的是來自#help標籤的50px。我已經沒有什麼想法在這裏嘗試。

+1

你爲什麼要編寫一個CSS解析器?這聽起來像你正試圖解決錯誤的問題。 – Halcyon

+0

因爲CSS文件是爲用戶擁有的設備唯一創建的。所以要調整元素的位置,我希望能夠讀取元素的定義。 – user1601513

回答

3

strpos如果搜索字符串位於內容的開頭,將返回0,如果根本沒有,則返回false。所以......

if(strpos($line,$tag) > 0) 

應該是...

if(strpos($line,$tag) !== false) 

你也一樣使用strpos其他地方,最後你可以只取出+1,因爲它是沒有必要的。

+0

這樣做。非常感謝你! – user1601513