2010-08-26 3 views
4

Javascript имеет две удобные подстрочные функции: substring(from,to) и substr(start,length).PHP equivilent подстроки Javascript()?

Это означает, что я могу решить, «когда я получу свою подстроку, начиная с позиции X, хочу ли я указать, какое строковое положение заканчивается или сколько символов длиннее подстроки?»

(Приятное использование версии from, to заключается в использовании search() определить обе позиции.)

РНР substr() позволяет определить длину подстроки. Есть ли встроенная функция строки, позволяющая указать позицию символа для завершения?

+0

Я думаю, что вы имеете в виду, что 'зиЬзЬг РНР()' делает последнего. .. он принимает длину как параметр. –

+0

@ Феликс Клинг - да, вот что я имел в виду. Благодарю. –

ответ

12

Я думаю, что этот вопрос больше связан с логикой. Вы можете выполнить обе функции substr().

Например. для первого substring(from, to):

$string = 'Foo Bar!'; 
$from = 2; 
$to  = 5; 
$final_string = substr($string, $from, $to - $from); 

И второй substr(start,length):

$string = 'Foo Bar!'; 
$start = 2; 
$length = 5; 
$final_string = substr($string, $start, $length); 
+0

Да, хорошо, это имеет смысл. Я просто задавался вопросом, не пропал ли я что-то в джунглях строковых функций PHP. :) –

0

substr(string, start, length) является стандартным использование функции link

+0

Извините, мои «прежние» и «последние» вещи были сбиты с толку. Я спрашивал о том, как указать конечную позицию. –

4

В дополнение к ответу Ника, вы всегда можете написать подстроку сами:

function substring($string, $from, $to){ 
    return substr($string, $from, $to - $from); 
} 

У меня также есть PHP-файл с некоторой функцией JavaScript, как функция strtruncate(), и включать их в скрипт PHP, в котором они мне нужны.

2

Только в случае, если вам нужен PHP порт метод в JavaScript «подстроки» вот надежный порт я должен был написать время назад:

/** 
* PHP port of Javascript's "substring" function 
* Author: Tubal Martin http://blog.margenn.com 
* Tests: http://margenn.com/tubal/substring/ 
* 
* @param string $str 
* @param int $from index 
* @param int $to index (optional) 
*/ 
private function substring($str, $from = 0, $to = FALSE) 
{ 
    if ($to !== FALSE) { 
     if ($from == $to || ($from <= 0 && $to < 0)) { 
      return ''; 
     } 

     if ($from > $to) { 
      $from_copy = $from; 
      $from = $to; 
      $to = $from_copy; 
     } 
    } 

    if ($from < 0) { 
     $from = 0; 
    } 

    $substring = $to === FALSE ? substr($str, $from) : substr($str, $from, $to - $from); 
    return ($substring === FALSE) ? '' : $substring; 
}